package com.dimples.dd.system.service;

import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.system.framework.file.core.client.FileClient;
import com.dimples.dd.system.model.entity.SystemFileConfigDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.dd.system.model.form.FileConfigForm;
import com.dimples.dd.system.model.query.FileConfigPageQuery;
import com.dimples.dd.system.model.vo.FileConfigRespVO;

public interface SystemFileConfigService extends IService<SystemFileConfigDO> {

    /**
     * 获得 Master 文件客户端
     *
     * @return 文件客户端
     */
    FileClient getMasterFileClient();

    /**
     * 获得指定编号的文件客户端
     *
     * @param id 配置编号
     * @return 文件客户端
     */
    FileClient getFileClient(Long id);

    /**
     * 创建文件配置
     *
     * @param fileConfigForm 文件配置
     * @return 配置编号
     */
    Long createFileConfig(FileConfigForm fileConfigForm);

    /**
     * 更新文件配置为 Master
     *
     * @param fileConfigForm 配置
     */
    void updateFileConfig(FileConfigForm fileConfigForm);

    /**
     * 删除文件配置
     *
     * @param id 配置编号
     */
    void updateFileConfigMaster(Long id);

    /**
     * 删除文件配置
     *
     * @param id 配置编号
     */
    void deleteFileConfig(Long id);

    /**
     * 获得文件配置
     *
     * @param id 文件配置id
     * @return 文件配置
     */
    FileConfigRespVO getFileConfig(Long id);

    /**
     * 获得文件配置分页
     *
     * @param pageQuery 分页查询
     * @return 文件配置分页
     */
    PageResult<FileConfigRespVO> getFileConfigPage(FileConfigPageQuery pageQuery);

    /**
     * 测试文件配置是否正确
     *
     * @param id 配置编号
     * @return 测试结果
     */
    String testFileConfig(Long id) throws Exception;
}
